﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ImportPiket
{
    class PrjProperty
    {
        public static string fileName;
        /// <summary>
        /// тип файла: 0-Auriga, 1-Therion, 2-Survex
        /// </summary>
        public static int typeFile;
        /// <summary>
        /// Заголовок шага
        /// </summary>
        public static List<string> stepList;
        /// <summary>
        /// Путь страницы
        /// </summary>
        public static List<string> pagesList;
        /// <summary>
        /// Описание к страницы
        /// </summary>
        public static List<string> descList;
        /// <summary>
        /// Текущая страница
        /// </summary>
        public static int curPageNo;
        /// <summary>
        /// Текст файла данных
        /// </summary>
        public static string txtData;
        /// <summary>
        /// Список полей журнала
        /// </summary>
        public static List<string> fieldsList;
        /// <summary>
        /// Пикеты
        /// </summary>
        public static List<Sources.PiketString> pikets;

        /// <summary>
        /// Поменять элементы в списке
        /// </summary>
        /// <param name="list">Список</param>
        /// <param name="indexA">Первый элемент</param>
        /// <param name="indexB">Второй элемент</param>
        public static void Swap(IList<string> list, int indexA, int indexB)
        {
            string tmp = list[indexA];
            list[indexA] = list[indexB];
            list[indexB] = tmp;
        }

        #region bool IsNumeric(string input) -- Проверка Если число то возвращает true
        /// <summary>
        /// Проверка Если число то возвращает true
        /// </summary>
        public static bool IsNumeric(string input)
        {
            try
            {
                string str;
                string separator = System.Globalization.CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator;

                str = input.Replace(".", separator);
                str = str.Replace(",", separator);
                double.Parse(str);
                return true;
            }
            catch
            {
                return false;
            }
        }
        #endregion IsNumeric

        #region bool IsPiket(Piket pkt) -- Проверка если основные поля удовлетворяют требованиям пикета, то возвращает true
        /// <summary>
        /// Проверка если основные поля удовлетворяют требованиям пикета, то возвращает true
        /// </summary>
        public static bool IsPiket(Sources.PiketString pkt)
        {
            bool ret = true;
            if (pkt.From == "")
                ret = false;
            if (pkt.To == "")
                ret = false;


            if (!IsNumeric(pkt.Length))
                ret = false;
            if (!IsNumeric(pkt.Bearing))
                ret = false;
            if (!IsNumeric(pkt.Inc))
                ret = false;
            if (!IsNumeric(pkt.Left))
                ret = false;
            if (!IsNumeric(pkt.Right))
                ret = false;
            if (!IsNumeric(pkt.Up))
                ret = false;
            if (!IsNumeric(pkt.Down))
                ret = false;

            return ret;
        }
        #endregion IsPiket

        #region Init() -- Инициализация свойств
        /// <summary>
        /// Инициализация свойств
        /// </summary>
        public static void Init()
        {
            fileName = "data.dat";
            txtData = "";
            curPageNo = 0;
            typeFile = 0;
            pagesList = new List<string>();
            descList = new List<string>();
            stepList = new List<string>();
            fieldsList = new List<string>();
            pikets = new List<Sources.PiketString>();

            System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();

            stepList.Add("Шаг1.Выбор файла");
            pagesList.Add("pack://application:,,,/" + asm.GetName().Name + ";component/" + "ImportPage1.xaml");
            descList.Add("Укажите фаил и его тип");

            stepList.Add("Шаг2.Просмотр файла");
            pagesList.Add("pack://application:,,,/" + asm.GetName().Name + ";component/" + "ImportPage2.xaml");
            descList.Add("Проверте выбранный файл, если необходимо внесите изменения");

            stepList.Add("Шаг3.Столбцы");
            pagesList.Add("pack://application:,,,/" + asm.GetName().Name + ";component/" + "ImportPage3.xaml");
            descList.Add("Укажите столбцы");

            stepList.Add("Шаг4.Таблица");
            pagesList.Add("pack://application:,,,/" + asm.GetName().Name + ";component/" + "ImportPage4.xaml");
            descList.Add("Проверте сформированную таблицу");

            fieldsList.Add("От");
            fieldsList.Add("До");
            fieldsList.Add("Длина");
            fieldsList.Add("Азимут");
            fieldsList.Add("Угол");
            fieldsList.Add("Лево");
            fieldsList.Add("Верх");
            fieldsList.Add("Низ");
            fieldsList.Add("Право");
        }
        #endregion Init()

    }
}
